1. Podsumowanie

2. Wykorzystane biblioteki

library(ggplot2)
library(plotly)
library(knitr)
library(EDAWR)
library(dplyr)
library(caret)
library(Hmisc)
library(randomForest)
opts_chunk$set(echo=FALSE, message=FALSE, warning=FALSE)

3. Wczytywanie danych z pliku

Podczas wczytywania danych ustawiono wykrywanie wartości brakujących na znak ‘?’. Dodatkowo przypisano poszczególne klasy danym atrybutom. Szczególnie istotne było to w przypadku zmiennej xmonth, która oznacza konkretny miesiąc.

Poniżej zamieszczono kod pobierający dane do zmiennej ‘sledzie’.

sledzie <- read.csv("sledzie.csv", dec = ".", na.strings = "?", colClasses=c(rep('numeric', 9), rep('integer', 1), rep('numeric', 4), rep('factor', 1), rep('numeric', 1)))

4. Przetwarzanie brakujących danych

Sprawdzono, że kolumny zawierające wartości brakujące to: cfin1, cfin2, chel1, chel2, lcop1, lcop2, sst. Zauważono, że dla jednej wartości totaln ww. atrybuty mają te same wartości. Wykorzystano to spostrzeżenie do utworzenia tabeli pomocniczej, w której oszacowano brakujące dane. Algorytm wyznaczania brakującej wartości grupuje tabelę po zmiennej totaln i dla każdej grupy tworzy rekord w tabeli pomocniczej z medianami kolejnych argumentów.

Następnie dla każdego z argumentu wyznaczano krotki z brakującymi wartościami i dla każdej takiej pozycji przypisywano wartość z tabeli pomocniczej.

Poniżej kod przedstawiający stworzenie tabeli pomocniczej.

# Tabela pomocnicza z medianą wartości poszczególnych atrybutów dla każdej grupy totaln
tmpTable <- sledzie %>% group_by(totaln) %>% arrange(totaln) %>% summarise( cfin1 = median(cfin1, na.rm = TRUE), cfin2 = median(cfin2, na.rm = TRUE), chel1 = median(chel1, na.rm = TRUE), chel2 = median(chel2, na.rm = TRUE), lcop1 = median(lcop1, na.rm = TRUE), lcop2 = median(lcop2, na.rm = TRUE), sst = median(sst, na.rm = TRUE)) 

Dalej na przykładzie zmiennej CFIN1 uzupełnienie brakujących wartości

# Uzupełnienie CFIN1
a<-sledzie %>% select(X, cfin1, totaln) %>% filter(is.na(cfin1))
for(i in 1:length(a[,1])){
    sledzie$cfin1[a$X[i]+1] <- as.numeric(tmpTable %>%   filter(totaln==sledzie$totaln[a$X[i]+1]) %>% select(cfin1))
}

Pozostałe atrybuty zostały uzupełnione w analogiczny sposób.

5. Statystyki zbioru

Zbiór posiada 52.582 pozycji. Każda pozycja określona jest zbiorem atrybutów, których podstawowe dane przedstawiono w tabeli.

X length cfin1 cfin2 chel1 chel2 lcop1 lcop2 fbar recr cumf totaln sst sal xmonth nao
Min. : 0 Min. :19.0 Min. : 0.0000 Min. : 0.0000 Min. : 0.000 Min. : 5.238 Min. : 0.3074 Min. : 7.849 Min. :0.0680 Min. : 140515 Min. :0.06833 Min. : 144137 Min. :12.77 Min. :35.40 8 : 9920 Min. :-4.89000
1st Qu.:13145 1st Qu.:24.0 1st Qu.: 0.0000 1st Qu.: 0.2778 1st Qu.: 2.469 1st Qu.:13.427 1st Qu.: 2.5479 1st Qu.:17.808 1st Qu.:0.2270 1st Qu.: 360061 1st Qu.:0.14809 1st Qu.: 306068 1st Qu.:13.60 1st Qu.:35.51 10 : 7972 1st Qu.:-1.89000
Median :26291 Median :25.5 Median : 0.1111 Median : 0.7012 Median : 5.750 Median :21.435 Median : 7.0000 Median :24.859 Median :0.3320 Median : 421391 Median :0.23191 Median : 539558 Median :13.86 Median :35.51 7 : 6922 Median : 0.20000
Mean :26291 Mean :25.3 Mean : 0.4432 Mean : 2.0257 Mean : 9.988 Mean :21.219 Mean : 12.8042 Mean :28.422 Mean :0.3304 Mean : 520367 Mean :0.22981 Mean : 514973 Mean :13.87 Mean :35.51 9 : 5714 Mean :-0.09236
3rd Qu.:39436 3rd Qu.:26.5 3rd Qu.: 0.3333 3rd Qu.: 1.7936 3rd Qu.:11.500 3rd Qu.:27.193 3rd Qu.: 21.2315 3rd Qu.:37.232 3rd Qu.:0.4560 3rd Qu.: 724151 3rd Qu.:0.29803 3rd Qu.: 730351 3rd Qu.:14.16 3rd Qu.:35.52 6 : 4218 3rd Qu.: 1.63000
Max. :52581 Max. :32.5 Max. :37.6667 Max. :19.3958 Max. :75.000 Max. :57.706 Max. :115.5833 Max. :68.736 Max. :0.8490 Max. :1565890 Max. :0.39801 Max. :1015595 Max. :14.73 Max. :35.61 5 : 3736 Max. : 5.08000
NA NA NA NA NA NA NA NA NA NA NA NA NA NA (Other):14100 NA

6. Analiza atrybutów

7. Zależności między zmiennymi

W tym punkcie zostaną przedstawione wykresy z zależności między zmiennymi. Badanie korelacji podzielono na dwa obszary:
a) korelacja między wszystkimi atrybutami - przedstawiono wykresy dla najbardziej zależnych wartości



b) korelacja atrybutów z rozpatrywaną zmienną długości śledzi - W tym przypadku okazało się, że zmienna length najbardziej skorelowana jest z sst (-0.45), następnie z nao(-0.26), fbar(0.25), lcop1(0.24), chel1(0.22)

8. Zmiany atrybutów w czasie

9. Przedmiot analizy

10. Przewidywanie długości śledzi

Do przewidzenia długości śledzi zastosowano metodę random forest. Podzielono zbiór danych na treningowy i testowy. Dane treningowe zajmowały 75% wszysktich rekordów. Do stworzenia modelu wykorzystano powtórzoną ocenę krzyżową o parametrach podziału na 2 podzbiory i 5 powtórzeniach. Dodatkowo optymalizacja atrybutów miała ulepszać miarę RMSE.

##      RMSE  Rsquared 
## 1.1798606 0.4867333

11. Rozwiązanie problemu

Zgodnie z parametrami algorytmu regresji wynika, że największy udział ma zmienna cumf, czyli łączne roczne natężenie połowów. Zmienna ta jest o tyle zaskakująca, że przy wyliczaniu korelacji z atrybutem length miała wartość 0.01. Drugą co do ważności zmienną jest sst, czyli liczba stopni przy powierzchni wody. Wydaje się, że to jest bardziej prawdopodobne i ma potwierdzenie w korelacji ze zmienną length. Niestety dla algorytmu regresji random forest, rozkład udziału poszczególnych atrybutów jest bardzo zmienny. W zależności od wartości parametrów tj. liczby powtórzeń w algorytmie oceny krzyżowej, czy zmeinnej mtry, a także ustawionego seeda, ranking widocznie się zmieniał, przy zbliżonych wartościach miary RMSE.